
varying vec4 diffuse, ambient;
varying vec3 normal, lightDir, halfVector;

void main()
{
   normal = normalize(gl_NormalMatrix * gl_Normal);
   
   // Normalize light direction
   lightDir = normalize(vec3(gl_LightSource[0].position));
   
   // Normalize the halfVector to pass it to the fragment shader
   halfVector = normalize(gl_LightSource[0].halfVector.xyz);
   
   // Compute diffuse and ambient colors
   diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse;
   ambient = gl_FrontMaterial.ambient * (gl_LightSource[0].ambient + gl_LightModel.ambient);
   
   // Transform position
   gl_Position = ftransform();
}
